\documentclass[]{beamer}
\usepackage[slovak]{babel}
\usepackage[utf8]{inputenc}
\usepackage{beamerthemesplit}
\usepackage{graphicx}
\uselanguage{slovak}
\title{Obhajoba projektu - Domácí videotéka}
\author{P. Franek, M. Hatina, D. Hoďovská, K. Vaculík} 
\institute{Fakulta informatiky, Masarykova univerzita}
\date{\today} 

\begin{document}

    \begin{frame}
        \titlepage
    \end{frame}

    \section{Zadanie}
    \begin{frame}
        \frametitle{Zadanie}
        Studenti navrhnou a vypracují desktopovou aplikaci na platformě Java, která uživateli umožní evidenci a správu domácích videí a videomédií.
        Aplikace by měla umožňovat:

        \begin{itemize}
            \item kategorizaci médií (možnost přidání/odebrání kategorie) 
            \item přidání média 
            \item vyhledání média/médií podle titulu 
            \item import médií z formátu odf 
        \end{itemize}
        Aplikace bude mít grafické uživatelské rozhraní a jako úložiště bude používat nativní XML databázi
    \end{frame}

    \section{Členovia tímu}
    \begin{frame}
        \frametitle{Členovia tímu}

        \begin{itemize}
            \item Peter Franek
            \item Martin Hatina
            \item Dominika Hoďovská
            \item Karel Vaculík
        \end{itemize}
    \end{frame}

    \section{Výsledky}
    \begin{frame}
        \frametitle{Výsledky}
        Aplikácia je plne funkčná a spĺňa všetky požiadavky zadania, konkrétne, využíva XML databázu pre ukladanie medií a ich kategorizáciu. V
        databáze je možné vyhľadávať média a kategórie podľa ich titulu, a taktiež je možné importovať média z poskytnutého odf súboru.
    \end{frame}

    \section{Database Manager}
    \begin{frame}
        \frametitle{Database Manager}
        \texttt{Database Manager} je trieda pre manipuláciu s dátami, ktoré sú uložené v natívnej XML databáze.

        Pracuje s triedami \texttt{Medium} a \texttt{Category}.
    \end{frame}

    \subsection{Média}
    \begin{frame}
        \frametitle{\texttt{Medium} trieda}
        Média sú reprezentované pomocou triedy \texttt{Medium}.

        Trieda \texttt{Medium} definuje nasledujúce vlastnosti:
        \begin{itemize}
            \item \texttt{id} - id média (dopĺňa \texttt{Database Manager})
            \item \texttt{title} - názov média
            \item \texttt{author} - autor média
            \item \texttt{content} - stručný popis obsahu
            \item \texttt{category} - zoznam kategórií, v ktorých sa dané médium nachádza
            \item \texttt{language} - zoznam jazykov
        \end{itemize}
    \end{frame}

    \subsection{Operácie nad médiami}
    \begin{frame}
        \frametitle{Operácie nad médiami}
        \begin{itemize}                
            \item \texttt{addMedium} - pridanie média
            \item \texttt{deleteMedium} - zmazanie média
            \item \texttt{updateMedium} - upravenie média 
            \item vyhľadanie média
                \begin{itemize}
                    \item \texttt{findMedium} - podľa názvu
                    \item \texttt{getMedium} - podľa id
                \end{itemize}
        \end{itemize}
    \end{frame}

    
    \subsection{Kategórie}
    \begin{frame}
        \frametitle{\texttt{Category} trieda}
        Kategórie sú reprezentované triedou \texttt{Category}.

        Každá katégória má tieto vlastnosti:
        \begin{itemize}
            \item \texttt{id} - id kategórie (dopĺňa \texttt{Database Manager})
            \item \texttt{title} - názov kategórie
            \item \texttt{media} - zoznam medií, ktoré spadajú do konkrétnej kategórie
        \end{itemize}
    \end{frame}

    \subsection{Operácie nad kategóriami}
    \begin{frame}
        \frametitle{Operácie nad kategóriami}
        \begin{itemize}
            \item \texttt{addCategory} - pridanie kategórie
            \item \texttt{deleteCategory} - zmazanie kategórie 
            \item \texttt{updateCategory} - upravenie kategórie 
            \item vyhľadanie kategórie 
                \begin{itemize}
                    \item \texttt{findCategory} - podľa názvu
                    \item \texttt{getCategory} - podľa id
                \end{itemize}
            \item \texttt{addToCategory} - pridanie média do kategórie 
            \item \texttt{removeFromCategories} - odstránenie média z kategórií
        \end{itemize}
    \end{frame}

    \subsection{Import}
    \begin{frame}
        \frametitle{Import médií}
        \begin{itemize}
            \item zabezpečuje metóda \texttt{importFrom}
            \item \texttt{importFrom} iteratívne prechádza vstupný odf súbor a extrahuje názvy médií
            \item jednotlivé záložky sú reprezentované ako kategórie
            \item riadky záložiek sa ukladajú ako nazvy medií 
            \item metóda využíva nástroj \textit{ODF Toolkit}
        \end{itemize}
    \end{frame}

    \section{GUI}
    \begin{frame}
		\frametitle{Grafické uživatelské prostředí}
		Grafické uživatelké prostředí je vytvořeno pomocí frameworku Swing.
		 \\[5mm]
		Základem návrhu jsou dvě tabulky, které reprezentují všechna média a kategorie uložená v databázi.
    \end{frame}
    
    \subsection{Snímek GUI}
    \begin{frame}
    	\frametitle{Snímek GUI}
    	\includegraphics[width=\textwidth]{screen}
    \end{frame}
    
    \subsection{Řádkové menu}
    \begin{frame}
    	\frametitle{Řádkové menu}
    	Poskytuje přístup k následujícím funkcím
    	\begin{itemize}
    		\item Import - importování dat z vybraného odf souboru
      		\item Refresh - obnovení databáze do poslední uložené změny
      		\item Save
    		\item Add new medium (category)
    		\item Update
    		\item Delete
    		\item Exit
    		\item About
    	\end{itemize}
    \end{frame}

	\subsection{Modely tabulek}
	\begin{frame}
		\frametitle{Modely tabulek}
		\begin{itemize}
			\item Obě tabulky mají implementovaný vlastní table model
			\item Překrývají základní metody, zavádějí navíc vlastní comparator, pomocí kterého řadí položky podle id
			\item Modely neumožňují editovat jednotlivé buňky
			\item Dvojklikem na položku se otevře dialogové okno s možností upravovat danou položku
		\end{itemize}
	\end{frame}
	
	\subsection{Zapojení více vláken}
	\begin{frame}
		\frametitle{Zapojení více vláken}
		Některé operace jsou časově náročné, proto je jejich výpočet prováděn mimo event dispatching thread.
		\\[2mm]
		Vícevláknovost je zajištěna pomocí třídy SwingWorker.
		\\[2mm]
		Operace, které jsou prováděny ve vlastním vlákně:
		\begin{itemize}
			\item Import dat z odf souboru
			\item Načtení databáze
			\item Odstranění označených položek
		\end{itemize}
	\end{frame}

\end{document}
